package repaso;

import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import junit.framework.Assert;

import org.junit.Test;

public class JuegoTest {
	private Juego j;

	@Test
	public void obtenerListaDeParticipantes() {
		this.j = new Juego();
		List<Participante> listaDeParticipantes = new LinkedList<Participante>();
		listaDeParticipantes = dameListaDeParticipantes(true);

		Assert.assertEquals(listaDeParticipantes, this.j.getParticipante());

	}

	@Test
	public void obtenerListaDeParticipantesOrdenados() {
		this.j = new Juego();
		SortedSet<Participante> listaDeParticipantesOrdenados = new TreeSet<Participante>(
				new ParticipanteComparador());

		listaDeParticipantesOrdenados.addAll(dameListaDeParticipantes(true));

		Assert.assertEquals(listaDeParticipantesOrdenados,
				this.j.getParticipantesOrdenadosPorNombre());

	}

	@Test
	public void obtenerListaDeParticipantesOrdenadosPorPuntosYTiempo() {
		this.j = new Juego();
		SortedSet<Participante> listaDeParticipantesOrdenados = new TreeSet<Participante>(
				new TiempoComparador());

		listaDeParticipantesOrdenados.addAll(dameListaDeParticipantes(true));

		Assert.assertEquals(listaDeParticipantesOrdenados,
				this.j.getParticipantesOrdenadosPorResultado());

	}

	private List<Participante> dameListaDeParticipantes(boolean asignarAlJuego) {
		List<Participante> listaDeParticipantes = new LinkedList<Participante>();
		Participante part1 = new Participante("Jorge");
		part1.participar(200, 60);
		Participante part3 = new Participante("Alan");
		part3.participar(50, 5);
		Participante part2 = new Participante("Alejando");
		part2.participar(200, 60);
		listaDeParticipantes.add(part1);
		listaDeParticipantes.add(part2);
		listaDeParticipantes.add(part3);
		if (asignarAlJuego) {
			this.j.agregar(part1);
			this.j.agregar(part2);
			this.j.agregar(part3);
		}
		return listaDeParticipantes;
	}

}
